#导入邮件库
import random
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formataddr
# 导入smtplib和MIMEText
import smtplib
#导入json
import json
#导入Httpresponse
from django.http import HttpResponse

from Web.asgi import application


#登录
def login(request):
    #获取用户输入验证码
    code = request.GET.get("code")
    #获取cookie中的验证码
    code_cookie = request.COOKIES.get("code")
    if code == code_cookie:
        return HttpResponse(json.dumps({"code":200}),content_type="application/json")
    else:
        return HttpResponse(json.dumps({"code": 500}), content_type="application/json")

#发送邮件
def send_email(request):
    #获取你要发送邮箱的地址
    email = request.GET.get("email")
    print(f"email={email}")
    try:
        #生成一个随机数作为邮件的一个验证码
        code =str(random.randint(1000,9999))
        
        # 定义伪装后的发件人名称
        disguised_sender_name = "火焰烟雾检测系统"
        
        # 简化的邮件内容
        email_content = f"""
        尊敬的用户，您好！

        您正在登录火焰烟雾检测系统，本次操作的验证码为：{code}

        验证码有效期为15分钟，请勿泄露给他人。

        如非本人操作，请忽略此邮件。

        火焰烟雾检测系统 技术支持团队
        """
        
        #创建邮件对象
        msg = MIMEText(email_content, 'plain', 'utf-8')
        
        #设置发件人 
        msg["From"] = formataddr((str(Header(disguised_sender_name, 'utf-8')), "邮箱"))
        
        #设置收件人
        msg["To"] = email
        
        #设置邮件主题
        msg["Subject"] = Header("火焰烟雾检测系统 - 登录验证码", 'utf-8')
        
        #创建smtp对象
        smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
        #登录邮箱
        smtp.login("邮箱", "令牌")
        
        #发送邮件
        smtp.sendmail("邮箱", [email], msg.as_string())
        print("发送成功")
        
        #关闭smtp
        smtp.close()
        
        #返回json格式的数据
        rs = HttpResponse(json.dumps({"code":200}),content_type="application/json")
        #把验证码存入到cookie
        rs.set_cookie("code", code, max_age=60*60*24)
        return rs
        
    except Exception as e:
        print(f"发送邮件时出错，如果您看到这个，请检查login中的邮箱是否被上传者删除了！请重新配置！: {e}")
        return HttpResponse(json.dumps({"code": 500}), content_type="application/json")